package net.oschina.archx.spring.sequoiadb;

import com.sequoiadb.base.DBCursor;
import com.sequoiadb.base.Sequoiadb;

/**
 * SequoiaSession
 *
 * @author Archx
 * @date 2015/6/30 0030
 */
public interface SequoiaSession {

    /**
     * 获取巨杉数据库实例
     *
     * @return Sequoiadb
     */
    Sequoiadb getSequoiadb();

    /**
     * 检测配置是否正确
     *
     * @return boolean
     * @throws Exception
     */
    boolean checkConfig() throws Exception;

    /**
     * 执行语句
     *
     * @param sql 语句
     */
    void execute(String sql);

    /**
     * 执行语句
     *
     * @param sql   语句
     * @param param 参数
     */
    void execute(String sql, Object param);

    /**
     * 执行语句
     *
     * @param sql    语句
     * @param params 参数数组
     */
    void execute(String sql, Object... params);

    /**
     * 执行语句
     *
     * @param sql 语句
     * @return 游标
     */
    DBCursor exec(String sql);

    /**
     * 开启事务
     */
    void beginTransaction();

    /**
     * 提交事务
     */
    void commit();

    /**
     * 回滚事务
     */
    void rollback();
}
